<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Google AppEngine Datastore summary | Blogs at Codeplus
	Technologies</title>
<meta name="description"
	content="Google AppEngine Datastore summary. This post has a Google I/O 2011 video that talks about the High Replication Datastore." />
<%@ include file="/view/layout/commonref.jsp"%>
</head>
<body>
	<div id="root">
		<div id="banner">
			<%@ include file="/view/layout/banner.jsp"%>
		</div>
		<div id="left-panel">
			<%@ include file="/view/layout/leftpanel.jsp"%>
		</div>
		<div id="body-panel"
			style="height: 850px; border: 1px solid #dedede; border-top: none; padding: 20px;"
			class="shadow">
			<h2>Google AppEngine Datastore summary</h2>
			<p>
				<a
					href="http://code.google.com/appengine/docs/java/datastore/overview.html#Introducing_the_Datastore"
					target="_blank">Google AppEngine datastore</a> is not relational.
				It's an object database. The concept of tabular storage doesn't hold
				here.
			</p>
			<p>It's schemaless. It means that the same unit of storage can
				hold String at one place and Long at the other. Being schemaless
				makes it fast because it doesn't have to refer to constraints to
				perform any select, insert, or delete operation. So, if it doesn't
				bother checking anything it is bound to be fast.</p>
			<p>However, data has to be replicated across so many data servers
				or virtual machines on the same server. Try to insert or update an
				object and retrieve it immidiately - you'll know what I am talking
				about. The data is not available to you immidiately because your
				request might reach another server or virtual machine where the data
				replication is not complete yet. But this happens momentarily after
				an application instance startup. After some time, its normal.</p>
			<p>
				The <a
					href="http://code.google.com/appengine/docs/java/datastore/hr/"
					target="_blank">High Replication Datastore (HRD)</a> is a new
				default for all new applications. Old applications are encouraged to
				migrate to HRD.
			</p>
			<p>HRD promises to be a highly available and reliable data
				storage solution. It offers better safeguard in an event of a
				catastrophic failure. This comes at a cost of upto 3 times the
				storage and CPU cost as compared to the traditional master/slave
				datastore.</p>
			<p>The implemetation is pretty straight forward. Whenever your
				application hosted on Google AppEngine performs an insert or delete
				all other relevant servers are asynchronously updated with new
				changes. So, in a nutshell, when your data is replicated and copied
				over to more than one server or virtual machine it gives you fault
				tolerence and that explains the high CPU and storage costs as well.</p>
			<p>The following video is from Google I/O 2011 that talks at
				length about the High Replication Datastore and ways to reap rich
				performance and availabilty boost it provides.</p>
			<iframe width="750" height="375"
				src="http://www.youtube.com/embed/xO015C3R6dw" frameborder="0"
				allowfullscreen></iframe>
		</div>
	</div>
	<div id="right-panel">
		<%@ include file="/view/layout/rightpanel.jsp"%>
	</div>
	<div id="footer">
		<%@ include file="/view/layout/footer.jsp"%>
	</div>
</body>
</html>